home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 52
/
Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso
/
Aminet
/
misc
/
emu
/
Apex-src.lha
/
CONCAT.XPL
< prev
next >
Wrap
Text File
|
2001-09-30
|
3KB
|
124 lines
\CONCAT.XPL JUN-23-88 VER 1.3
\THIS PROGRAM CONCATENATES TEXT FILES. IT ILLUSTRATES THE USE
\ OF SCAN AND OPENF TO OPEN AN INPUT FILE BY NAME FROM XPL.
\WARNING: FSCAN USES 1K OF THE SYSTEM OUTPUT BUFFER AT $74800.
\REVISION HISTORY:
\MAR-14-84, ORIGINAL
\JUN-23-88, MODIFIED FOR 68000 APEX
code RESERVE=3 CHIN=7 CHOUT=8
CRLF=9 INTOUT=11 TEXT=12 OPENI=13
OPENO=14 CLOSE=15 TRAP=17 GETERR=22
SCAN=24 OPENF=29;
define INTSIZE=4; \NUMBER OF BYTES IN AN INTEGER
define CR=$0D, EOF=$1A, SP=$20;
integer UNIT, INFO, I, CHAR;
procedure FILMOV; \MOVE THE IN FILE TO THE OUT FILE
integer CH;
loop begin
CH:= CHIN(3);
if CH = EOF then quit;
CHOUT(3,CH);
end; \FILMOV
function GETCH;
integer CH;
begin
CH:= CHIN(0);
if CH>=^a & CH<=^z then CH:= CH &$DF; \FORCE TO UPPERCASE
return CH;
end; \GETCH
function INFILE; \GET THE INPUT FILE
integer I, CHAR, INFO, UNIT;
address LINE;
begin
LINE:= RESERVE(12); \(EXTRA SPACE IS FOR OVERSHOOT)
TEXT(0, "INPUT FILE? ");
OPENI(0);
CHAR:= GETCH;
if CHAR=CR then
begin
CLOSE(3);
CRLF(0); TEXT(0, "ALL DONE...");
exit
end;
if CHAR<^0 ! CHAR>^9 then \UNIT NO. MISSING
begin
TEXT(0, "ERROR--NEED UNIT NUMBER"); CRLF(0);
return false;
end;
UNIT:= CHAR-^0;
CHAR:= GETCH; \SKIP THE COLON
I:= 0;
repeat
CHAR:= GETCH;
LINE(I):= CHAR;
I:= I+1;
until CHAR=^. ! CHAR=CR ! I>8; \(TRICKY)
for I:= I-1, 7 do LINE(I):= SP;
while CHAR#^. & CHAR#CR do CHAR:= GETCH;
if CHAR=^. then
begin
repeat
CHAR:= GETCH;
LINE(I):= CHAR; \(OVERSHOOTS ONE CHAR)
I:= I+1;
until CHAR=CR ! I>11;
for I:= I-1, 11 do LINE(I):= SP;
end
else \EXTENSION IS MISSING
begin
TEXT(0, "ERROR--NEED FULL FILE NAME"); CRLF(0);
return false;
end;
CRLF(0); \ECHO FULL FILE NAME
INTOUT(0, UNIT);
CHOUT(0, ^:);
for I:= 0, 7 do CHOUT(0, LINE(I));
CHOUT(0, ^.);
for I:= 8, 10 do CHOUT(0, LINE(I));
CHOUT(0, ^=);
INFO:= RESERVE(2*INTSIZE);
TRAP(false);
SCAN(UNIT, INFO, LINE);
if GETERR then
begin
CRLF(0); TEXT(0, "ERROR--NO SUCH FILE"); CRLF(0);
TRAP(true);
return false;
end;
TRAP(true);
INTOUT(0, INFO(0)); TEXT(0, ", "); INTOUT(0, INFO(1)); CRLF(0);
OPENF(UNIT, INFO);
return true;
end; \INFILE
begin \MAIN
TEXT(0, "-- CONCATENATE, V1.3 --
");
OPENO(3);
loop begin
repeat until INFILE; \KEEP TRYING UNTIL IT'S RIGHT
FILMOV; \MOVE THE FILE
end;
end; \MAIN
");
OPENO(3);
loop begin
repeat until INFILE; \KEEP TRYING UNTIL IT'S RIGHT
FILMOV; \MOVE THE FILE
end;
end; \MAIN